﻿--****en el servidor asereplicado****
--creación de la base de datos
use master
go

--create database suscripciones_bdd
--go 

use suscripciones_bdd
go

--  tablas de sonora
create table suscriptor_son
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)		
)


create table suscripcion_son
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)


-- definicion de llaves primarias en las tablas de sonora
alter table suscriptor_son add constraint suscriptor_idsonpk primary key(suscriptor_id)
alter table suscripcion_son add constraint foliosonpk primary key(folio)
alter table frecuencia_salida add constraint frecuencia_salida_idpk primary key(frecuencia_salida_id)
alter table tipo_publicacion add constraint tipo_publicacion_idprimary key(tipo_publicacion_id)

-- llaves foraneas
alter table suscripcion_son add constraint suscriptor_idsonfk foreign key (suscriptor_id) references suscriptor_son(suscriptor_id)
alter table suscripcion_son add constraint publicacion_idsonfk foreign key (publicacion_id) references publicacion(publicacion_id)

-- procedimiento de insercion para que sea utilizado de forma remota
CREATE PROCEDURE inserta_publicacion_sonora
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
insert into publicacion_son(publicacion_id,tipo_publicacion_id,frecuencia_salida_id,editorial_id,nombre)
values (@publicacion_id,@tipo_publicacion_id,@frecuencia_salida_id,@editorial_id,@nombre)

-- procedimiento de borrado para que sea utilizado de forma remota
CREATE PROCEDURE eliminar_publicacion_sonora
	@publicacion_id				numeric(10),
AS
delete from publicacion_son where publicacion_id=@publicacion_id

-- procedimiento de actualizacion para que sea utilizado de forma remota
CREATE PROCEDURE actualizacion_publicacion_son
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
update publicacion_son set 	tipo_publicacion_id=@tipo_publicacion_id,
							frecuencia_salida_id=@frecuencia_salida,
							editorial_id=@editorial_id,
							nombre=@nombre 
where publicacion_id=@publicacion_id	



-- -------------------------------------------------------------------------------
-- -------------------------------------------------------------------------------
--						ESTE ES OTRO SERVIDOR
-- -------------------------------------------------------------------------------
-- -------------------------------------------------------------------------------

-- tablas de tamaulipas
 create table suscriptor_tam
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)		
)


create table suscripcion_tam
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)



alter table suscriptor_tam add constraint suscriptor_tamidpk primary key(suscriptor_id)
alter table suscripcion_tam add constraint foliotambpk primary key(folio)
alter table genero add constraint generopk primary key(genero_id)


-- llaves foraneas
alter table suscripcion_tam add constraint suscriptor_idtamk foreign key (suscriptor_id) references suscriptor_tam(suscriptor_id)
alter table suscripcion_tam add constraint publicacion_idtamfk foreign key (publicacion_id) references publicacion(publicacion_id)


-- procedimiento de insercion para que sea utilizado de forma remota
CREATE PROCEDURE inserta_publicacion_tam
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
insert into publicacion_tam(publicacion_id,tipo_publicacion_id,frecuencia_salida_id,editorial_id,nombre)
values (@publicacion_id,@tipo_publicacion_id,@frecuencia_salida_id,@editorial_id,@nombre)
as 
exec ASEREPLICADO.suscripciones_bdd.distri7.inserta_publicacion_tam @publicacion_id,@tipo_publicacion_id,@frecuencia_salida_id,@editorial_id,@nombre
-- procedimiento de borrado para que sea utilizado de forma remota
CREATE PROCEDURE eliminar_publicacion_tam
	@publicacion_id				numeric(10),
AS
delete from publicacion_tam where publicacion_id=@publicacion_id

-- procedimiento de actualizacion para que sea utilizado de forma remota
CREATE PROCEDURE actualizacion_publicacion_tam
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
update publicacion_tam set 	tipo_publicacion_id=@tipo_publicacion_id,
							frecuencia_salida_id=@frecuencia_salida,
							editorial_id=@editorial_id,
							nombre=@nombre 
where publicacion_id=@publicacion_id	


--creacion de los procedimientos remotos para insertar desde Brahm en Asereplicado 

	


----------PROXY NECESARIAS PARA CREAR LAS VISTAS

create existing table suscriptor_tlax
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)
)external table at "ASEREPLICADO.suscripciones_bdd.dbo.suscriptor_tlax"

create existing table suscriptor_tab
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)
)external table at "ASEREPLICADO.suscripciones_bdd.dbo.suscriptor_tab"



create existing table suscripcion_tlax
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)external table at "ASEREPLICADO.suscripciones_bdd.dbo.suscripcion_tlax"

create existing table suscripcion_tab
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)external table at "ASEREPLICADO.suscripciones_bdd.dbo.suscripcion_tab"





-------VISTAS



create view SUSCRIPCION
as
(
	select * from suscripcion_df
	union
	select * from suscripcion_son
	union
	select * from suscripcion_tab
	union
	select * from suscripcion_tlax
	union
	select * from suscripcion_tam
)


create view SUSCRIPTOR
as
(
	select * from suscriptor_df
	union
	select * from suscriptor_son
	union
	select * from suscriptor_tab
	union
	select * from suscriptor_tlax
	union
	select * from suscriptor_tam
)

